package sv.gob.mh.dgii.model.pojos.im;

import java.io.Serializable;
import java.util.Calendar;
import java.util.Date;
import sv.gob.mh.dgii.common.Utils;
import sv.gob.mh.dgii.model.DcImprenta;
import sv.gob.mh.dgii.model.EdDeclaraciones;
import sv.gob.mh.dgii.model.ImImprentSusp;
import sv.gob.mh.dgii.model.ImSolicitud;
import sv.gob.mh.dgii.model.RcCaractTrib;
import sv.gob.mh.dgii.model.RcDomicilio;
import sv.gob.mh.dgii.model.RcRepresentante;
import sv.gob.mh.dgii.model.RcRuc;
import sv.gob.mh.dgii.model.TbTipoContrib;

public class DcImprentaPojo implements Serializable {

    private DcImprenta dcImprenta;
    private RcRuc rcRuc;
    private RcCaractTrib rcCaractTrib;
    private RcDomicilio rcDomicilio;
    private EdDeclaraciones edDeclaraciones;
    private ImSolicitud imSolicitud;
    private RcRepresentante rcRepresentante;
    private RcRuc rcRucPropietario;
    private Date lastmovement;
    private String nombreComercial;
    private ImImprentSusp imImprentSusp;
    private ImImprentSusp imImprentSuspAnterior;

    public DcImprentaPojo() {
        imImprentSusp = new ImImprentSusp();
        imImprentSusp.setFhingreso(Calendar.getInstance().getTime());

    }

    public String getDdepartamento() {
        String ret = null;
        if (rcDomicilio != null) {
            ret = rcDomicilio.getTbMunicipio().getTbDepartamento().getDdepartamento();
        }
        return ret;
    }
    
    public String getDmunicipio() {
        String ret = null;
        if (rcDomicilio != null) {
            ret = rcDomicilio.getTbMunicipio().getDmunicipio();
        }
        return ret;
    }

    public String getNombreCompletoRepresentante() {
        return getNombreCompleto(rcRepresentante != null ? rcRepresentante.getRcRucByNitRepresentante() : null);
    }

    public String getNombreCompletoPropietario() {
        return getNombreCompleto(rcRucPropietario);
    }

    public static String getNombreCompleto(RcRuc rcRuc) {
        String ret = null;
        try {
            TbTipoContrib tipoContrib = rcRuc.getTbTipoContrib();
            if (!Utils.isNullOrEmpty(rcRuc.getTbTipoContrib())) {
                if (tipoContrib.getTbClaseContrib().getCclase().equals("J")) {
                    ret = "" + " " + Utils.nvl(rcRuc.getS1apeRasoc(), "");
                } else {
                    ret = "" + " " + Utils.nvl(rcRuc.getSnombres(), "")
                            + " " + Utils.nvl(rcRuc.getS1apeRasoc(), "")
                            + " " + Utils.nvl(rcRuc.getS2apeAbrev(), "");
                }
            } else {
                ret = "" + " " + Utils.nvl(rcRuc.getSnombres(), "")
                        + " " + Utils.nvl(rcRuc.getS1apeRasoc(), "")
                        + " " + Utils.nvl(rcRuc.getS2apeAbrev(), "");
            }
        } catch (Exception e) {
        }
        return ret;
    }

    /**
     * @return the dcImprenta
     */
    public DcImprenta getDcImprenta() {
        return dcImprenta;
    }

    /**
     * @param dcImprenta the dcImprenta to set
     */
    public void setDcImprenta(DcImprenta dcImprenta) {
        this.dcImprenta = dcImprenta;
    }

    /**
     * @return the rcRuc
     */
    public RcRuc getRcRuc() {
        return rcRuc;
    }

    /**
     * @param rcRuc the rcRuc to set
     */
    public void setRcRuc(RcRuc rcRuc) {
        this.rcRuc = rcRuc;
    }

    /**
     * @return the rcCaractTrib
     */
    public RcCaractTrib getRcCaractTrib() {
        return rcCaractTrib;
    }

    /**
     * @param rcCaractTrib the rcCaractTrib to set
     */
    public void setRcCaractTrib(RcCaractTrib rcCaractTrib) {
        this.rcCaractTrib = rcCaractTrib;
    }

    /**
     * @return the edDeclaraciones
     */
    public EdDeclaraciones getEdDeclaraciones() {
        return edDeclaraciones;
    }

    /**
     * @param edDeclaraciones the edDeclaraciones to set
     */
    public void setEdDeclaraciones(EdDeclaraciones edDeclaraciones) {
        this.edDeclaraciones = edDeclaraciones;
    }

    /**
     * @return the lastmovement
     */
    public Date getLastmovement() {
        return lastmovement;
    }

    /**
     * @param lastmovement the lastmovement to set
     */
    public void setLastmovement(Date lastmovement) {
        this.lastmovement = lastmovement;
    }

    /**
     * @return the nombreComercial
     */
    public String getNombreComercial() {
        return nombreComercial;
    }

    /**
     * @param nombreComercial the nombreComercial to set
     */
    public void setNombreComercial(String nombreComercial) {
        this.nombreComercial = nombreComercial;
    }

    /**
     * @return the imSolicitud
     */
    public ImSolicitud getImSolicitud() {
        return imSolicitud;
    }

    /**
     * @param imSolicitud the imSolicitud to set
     */
    public void setImSolicitud(ImSolicitud imSolicitud) {
        this.imSolicitud = imSolicitud;
    }

    /**
     * @return the rcRepresentante
     */
    public RcRepresentante getRcRepresentante() {
        return rcRepresentante;
    }

    /**
     * @param rcRepresentante the rcRepresentante to set
     */
    public void setRcRepresentante(RcRepresentante rcRepresentante) {
        this.rcRepresentante = rcRepresentante;
    }

    /**
     * @return the rcRucPropietario
     */
    public RcRuc getRcRucPropietario() {
        return rcRucPropietario;
    }

    /**
     * @param rcRucPropietario the rcRucPropietario to set
     */
    public void setRcRucPropietario(RcRuc rcRucPropietario) {
        this.rcRucPropietario = rcRucPropietario;
    }

    /**
     * @return the imImprentSusp
     */
    public ImImprentSusp getImImprentSusp() {
        return imImprentSusp;
    }

    /**
     * @param imImprentSusp the imImprentSusp to set
     */
    public void setImImprentSusp(ImImprentSusp imImprentSusp) {
        this.imImprentSusp = imImprentSusp;
    }

    /**
     * @return the imImprentSuspAnterior
     */
    public ImImprentSusp getImImprentSuspAnterior() {
        return imImprentSuspAnterior;
    }

    /**
     * @param imImprentSuspAnterior the imImprentSuspAnterior to set
     */
    public void setImImprentSuspAnterior(ImImprentSusp imImprentSuspAnterior) {
        this.imImprentSuspAnterior = imImprentSuspAnterior;
    }

    /**
     * @return the rcDomicilio
     */
    public RcDomicilio getRcDomicilio() {
        return rcDomicilio;
    }

    /**
     * @param rcDomicilio the rcDomicilio to set
     */
    public void setRcDomicilio(RcDomicilio rcDomicilio) {
        this.rcDomicilio = rcDomicilio;
    }
}